diff options
Diffstat (limited to 'src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts')
| -rw-r--r-- | src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts b/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts new file mode 100644 index 0000000..485edf4 --- /dev/null +++ b/src/routes/scope-prompt/ok/if/[scopes]/+page.server.ts @@ -0,0 +1,17 @@ +import { checkScope } from '$lib/auth'; +import { redirect } from '@sveltejs/kit'; + +export const load = async (e) => { + const scopes = e.params.scopes + .split(' ') + .flatMap((v) => v.split(',')) + .flatMap((v) => v.split('+')) + .filter((v) => v); + const session = await e.locals.auth(); + const hasScopes: string[] = session.tokens.scope?.split(' ') ?? []; + if (checkScope(session, scopes, false)) throw redirect(303, '../..'); + else + return { + missingScopes: scopes.filter((scope) => !hasScopes.includes(scope)), + }; +}; |